var arr = [10, 20, 50, 30, 5]

const arr2 = [1, ...arr, 100]

// [1, 10, 20, 50, 30, 5, 100]

// console.log(arr2);

/**
 *求最大最小值
 * 使用最原始的循环写法
 * @param {*} arr
 */
function getMax(arr) {
  var max = arr[0]
  for (i = 0; i < arr.length; i++) {
    max = arr[i] > max ? arr[i] : max
  }
  console.log(max);
}

// 求最小值
function getMin(arr) {
  var min = arr[0]
  for (i = 0; i < arr.length; i++) {
    min = arr[i] < min ? arr[i] : min
  }
  console.log(min);
}
// 调用
getMax(arr)
getMin(arr)

/*
使用Math.max和min
因为原生的Math.max方法只能接受一组最原始的数据对象
Math.max(10, 20, 50, 30, 5),这用写法，如果传一个变量进去会报错
它相当于传了一个数组进去，是不符合语法规范的
所以最原始的写法需要使用到apply这个方法
*/
console.log(Math.max.apply(null, arr));
console.log(Math.min.apply(null, arr));

/*
使用展开运算符
*/
console.log(Math.max(...arr));
console.log(Math.min(...arr));

function printSum(...nums) {
  let sum = 0
  for (let i = 0; i < nums.length; i++) {
    sum += nums[i];
  }
  console.log(sum);
}

printSum(3, 12, 6, 1, 4)
// printSum(arr) 传入一个数组对象会把数组的键0 1 2 也给展开出来
// 原因是数组其实也是一个特殊的键值对对象